#ifndef __IFileSystem_H__
#define __IFileSystem_H__

#include "../stream/IPacketReader.h"
#include "../stream/IPacketWriter.h"
#include "../types.h"
#include <boost/filesystem.hpp>
#include <lampe/IReferenceCounted.h>

namespace lampe{
namespace io{

/**
 * @class IFileSystem
 * Интерфейс файловой системы
 **/
class IFileSystem:public virtual lampe::IReferenceCounted{
public:
	virtual stream::IPacketReader*read(boost::filesystem::path fileName)=0;
	virtual stream::IPacketWriter*write(boost::filesystem::path fileName)=0;
	virtual LAMPE_VECTOR_VENDOR<boost::filesystem::path>files(boost::filesystem::path dirName)=0;
	virtual LAMPE_VECTOR_VENDOR<boost::filesystem::path>dirs(boost::filesystem::path dirName)=0;
	virtual void makeDir(boost::filesystem::path)=0;
	virtual boost::filesystem::path pwd()=0;
	virtual void pwd(boost::filesystem::path dirName)=0;
	virtual void pwd_lock()=0;
	virtual void pwd_unlock()=0;
};
}
}

#endif
